#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void test(char *s)
{
    s = calloc(10, 1);
    strcpy(s, "hello");
}

int main0()
{
    //char *p = calloc(10, 1);//堆中分配了10个char
    char *p = NULL;
    test(p);
    printf("%s\n", p);
    free(p);
    return 0;
}

void test1(char **s)
    //当你想通过函数内部给指针形参分配堆内存的时候，形参一定是一个二级指针
{
    *s = calloc(10, 1);
    strcpy(*s, "hello");
    
}

int main()
{
    char *p = NULL;
    test1(&p);
    printf("%s\n", p);
    free(p);
    return 0;
}
